// pages/order/order.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    /**
     * 显示甘特图
     */
    enableGant: true,
    /**
     * 显示管理页面
     */
    enableManage: false,
    /**
     * 隐藏添加订单页
     */
    hideOrderAddForm: true,
    /**
     * 隐藏订单详情页
     */
    hideOrderDetail: true,
    /**
     * 隐藏取消订单确认页
     */
    hideCancelOrderPanel: true,
    /**
     * 隐藏修改订单表单页
     */
    hideOrderForm: true,
    /**
     * 日期选择器选择的时间
     */
    selectedDate: null,
    /**
     * 输入的产品名
     */
    inputProductId: 0,
    /**
     * 输入的订单数量
     */
    inputOrderNum: 0,
    /**
     * 订单甘特图数据    
     * - id 订单id    
     * - state 订单状态
     * - stepList 工艺步骤    
     * - - stepName 工艺名
     * - - weight 工艺占比
     * - - normalProgerss 正常进度
     * - - delayProgress 延期进度
     */
    gantData: [{
      id: 414837,
      state: '已完成',
      stepList: [{
        stepName: "装配",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }, {
        stepName: "测试",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }]
    }, {
      id: 416621,
      state: '已完成',
      stepList: [{
        stepName: "装配",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }, {
        stepName: "测试",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }]
    }, {
      id: 417174,
      state: '已完成',
      stepList: [{
        stepName: "装配",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }, {
        stepName: "测试",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }]
    }, {
      id: 417194,
      state: '已完成',
      stepList: [{
        stepName: "装配",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }, {
        stepName: "测试",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }]
    }, {
      id: 417642,
      state: '已完成',
      stepList: [{
        stepName: "装配",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }, {
        stepName: "测试",
        weight: 1,
        normalProgress: 1,
        delayProgress: 0,
      }]
    }],
    orderDetail: {
      orderId: 1234,
      productId: 12345,
      num: 40000,
      state: '已完成',
      endTime: '2020-12-31'
    },

    orderListData: [{
      id: 414837,
      state: '已完成',
      endTime: '2018-11-15'
    }, {
      id: 416621,
      state: '已完成',
      endTime: '2018-12-20'
    }, {
      id: 417174,
      state: '已完成',
      endTime: '2018-12-05'
    }, {
      id: 417194,
      state: '已完成',
      endTime: '2018-11-22'
    }, {
      id: 417642,
      state: '已完成',
      endTime: '2018-11-15'
    }]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    console.log('requre refresh')
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    console.log("bottom")
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 显示甘特图    
   * // TODO: 更新甘特图
   */
  showGant: function (e) {
    this.setData ({
      enableGant: true,
      enableManage: false
    })
  },

  /**
   * 显示订单管理    
   * // TODO: 更新订单列表
   */
  showManage: function (e) {
    this.setData ({
      enableGant: false,
      enableManage: true
    })
  },

  /**
   * 列表中的订单的点击监听    
   * 打开订单详情页
   * @param {*} e 
   */
  onclickOrder: function (e) {
    let orderId = e.currentTarget.dataset.value
    console.log('click order ' + orderId)
    // TODO: 从后端获取订单详细信息
    if (orderId == 414837) {
      this.setData({
        orderDetail: {
          orderId: 414837,
          productId: 1302215,
          num: 6400,
          state: '已完成',
          endTime: '2018-11-15'
        }
      })
    } else if (orderId == 416621) {
      this.setData({
        orderDetail: {
          orderId: 416621,
          productId: 3059786,
          num: 3250,
          state: '已完成',
          endTime: '2018-12-20'
        }
      })
    } else if (orderId == 417174) {
      this.setData({
        orderDetail: {
          orderId: 417174,
          productId: 1302215,
          num: 11400,
          state: '已完成',
          endTime: '2018-12-05'
        }
      })
    } else if (orderId == 417194) {
      this.setData({
        orderDetail: {
          orderId: 417194,
          productId: 1302215,
          num: 500,
          state: '已完成',
          endTime: '2018-11-22'
        }
      })
    } else if (orderId == 417642) {
      this.setData({
        orderDetail: {
          orderId: 417174,
          productId: 1302215,
          num: 1500,
          state: '已完成',
          endTime: '2018-11-15'
        }
      })
    }
    this.setData({
      hideOrderDetail: false,
    })
  },

  /**
   * 订单详情页取消按钮的点击监听    
   * 关闭详情页
   * @param {*} e 
   */
  onclickCancel: function (e) {
    this.setData({
      hideOrderDetail: true
    })
  },

  /**
   * 取消订单按钮的点击监听    
   * 打开取消订单确认页面
   * @param {*} e 
   */
  onclickConfirm: function (e) {
    this.setData({
      hideCancelOrderPanel: false,
      hideOrderDetail: true
    })
  },

  /**
   * 确认取消订单按钮的点击监听    
   * 请求后端取消订单
   * @param {*}} e 
   */
  onclickCancelOrder: function (e) {
    // TODO: 取消订单
  },


  /**
   * 放弃取消订单按钮的点击监听    
   * 返回订单详情页
   * @param {*} e 
   */
  onclickReturn: function (e) {
    this.setData({
      hideCancelOrderPanel: true,
      hideOrderDetail: false
    })
  }, 

  /**
   * 修改订单按钮的点击监听    
   * 进入修改订单表单页
   * @param {*} e 
   */
  onclickForm: function (e) {
    this.setData({
      selectedDate: this.data.orderDetail.endTime,
      inputProductId: this.data.orderDetail.productId,
      inputOrderNum: this.data.orderDetail.num,
      hideOrderForm: false,
      hideOrderDetail: true
    })
  },

  /**
   * 修改订单确认按钮的点击监听    
   * 请求后端修改订单
   * @param {*} e 
   */
  onclickConfirmForm: function (e) {
    // TODO: 修改订单
  },

  /**
   * 放弃修改订单按钮的点击监听    
   * 返回订单详情页
   * @param {*} e 
   */
  onclickCancelForm: function (e) {
    this.setData({
      hideOrderForm: true,
      hideOrderDetail: false
    })
  },

  /**
   * 产品名输入发生改变的监听    
   * 更新输入的name
   * @param {*} e 
   */
  onInputProductIdChanged: function (e) {
    var name = e.detail.value
    console.log('input name: ' + name)
    this.setData({
      inputOrderId: name
    })
  },

  /**
   * 产品数量输入发生改变的监听    
   * 更新输入的num
   * @param {*} e 
   */
  onInputNumChanged: function (e) {
    var num = e.detail.value
    console.log('input num: ' + num)
    this.setData({
      inputOrderNum: num
    })
  },

  /**
   * 日期选择器的日期改变监听    
   * 更新选择的日期
   * @param {*} e 
   */
  ondateChange: function (e) {
    var date = e.detail.value;
    console.log(date)
    this.setData({
      selectedDate: date
    })
  },

  /**
   * 订单管理页面添加订单按钮点击监听
   */
  onclickAddRes: function (e) {
    this.setData({
      hideOrderAddForm: false,
      inputOrderNum: 0,
      inputProductId: '',
      selectedDate: '2020-01-01'
    })
  },

  /**
   * 添加订单页面的确认添加按钮点击监听    
   * // TODO: 请求后端添加订单
   */
  onclickConfirmAddForm: function (e) {

  },

  /**
   * 添加订单页面放弃按钮监听事件
   */
  onclickCancelAddForm: function (e) {
    this.setData({
      hideOrderAddForm: true
    })
  }
})